package com.agri.api.service.mall;


import com.ruoyi.common.model.mall.domain.MallAddress;
import com.ruoyi.common.model.mall.dto.req.LoginReq;
import com.ruoyi.common.model.mall.dto.req.UserAddressReq;
import com.ruoyi.common.model.mall.dto.resp.LoginResp;

import java.util.List;

/**
 * @author huixh
 */

public interface IWxUserService {


    /**
     * 用户登录
     *
     * @param loginReq 包含用户登录信息的请求对象
     * @return 登录响应对象，包含登录结果和用户信息
     */
    LoginResp login(LoginReq loginReq);

    /**
     * 获取用户地址列表
     *
     * @param token 用户的认证令牌
     * @return 用户地址列表
     */
    List<MallAddress> getUserAddressList(String token);

    /**
     * 添加用户地址
     *
     * @param address 包含用户地址信息的请求对象
     * @param token   用户的认证令牌
     */
    void addUserAddress(UserAddressReq address, String token);

    /**
     * 删除用户地址
     *
     * @param id    地址ID
     * @param token 用户的认证令牌
     */
    void deleteUserAddress(Long id, String token);

    /**
     * 获取用户地址详情
     *
     * @param id    地址ID
     * @param token 用户的认证令牌
     * @return 用户地址对象
     */
    MallAddress getUserAddress(Long id, String token);

    /**
     * 更新用户地址
     *
     * @param id      地址ID
     * @param address 包含更新后的用户地址信息的请求对象
     * @param token   用户的认证令牌
     */
    void updateUserAddress(Long id, UserAddressReq address, String token);

    /**
     * 获取用户信息
     *
     * @param phone 用户手机号
     * @return 如果用户存在，返回包含用户信息的登录响应对象；否则返回null或适当的错误信息
     */
    LoginResp hasUserInfo(String phone);
}
